Memory system and method for controlling nonvolatile memory

ABSTRACT

According to one embodiment, a memory system includes a nonvolatile memory and a controller. The controller acquires, from a host, write data having the same first size as a data write unit of the nonvolatile memory and obtained by dividing write data associated with one write command having a first identifier indicating a first write destination block in a plurality of write destination blocks into a plurality of write data or combining write data associated with two or more write commands having the first identifier. The controller writes the acquired write data having the first size to the first write destination block by a first write operation.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.16/928,422 filed Jul. 14, 2020, which is a continuation of U.S.application Ser. No. 16/351,993 filed Mar. 13, 2019, which is based uponand claims the benefit of priority from Japanese Patent Application No.2018-083662, filed Apr. 25, 2018, the entire contents of each of whichare incorporated herein by reference.

FIELD

Embodiments described herein relate generally to a technology forcontrolling a nonvolatile memory.

BACKGROUND

Recently, memory systems including nonvolatile memories are widelyspread. As one of these memory systems, a solid state drive (SSD) basedon NAND flash technology is known.

Even in a server of a data center, the SSD is used as a storage device.

High I/O performance is required in a storage device used in a host(host computing system) such as the server.

Therefore, recently, a new interface between the host and the storagedevice starts to be proposed.

Further, in recent storage devices, it may be required to enabledifferent types of data to be written to different write destinationblocks.

For this reason, it is required to realize new technology for enabling aplurality of write destination blocks to be simultaneously used.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram illustrating a relation between a host and amemory system (flash storage device) according to an embodiment.

FIG. 2 is a block diagram illustrating a configuration example of thememory system according to the embodiment.

FIG. 3 is a block diagram illustrating a relation between a plurality ofchannels and a plurality of NAND flash memory chips, which are used inthe memory system according to the embodiment.

FIG. 4 is a diagram illustrating a configuration example of a certainsuper block used in the memory system according to the embodiment.

FIG. 5 is a block diagram illustrating a relation between a write databuffer and a flash translation unit included in the host and a writecontrol unit, a DMAC, and an internal buffer included in the memorysystem according to the embodiment.

FIG. 6 is a block diagram illustrating I/O command processing executedby the memory system according to the embodiment.

FIG. 7 is a diagram illustrating a multi-step write operation executedby the memory system according to the embodiment.

FIG. 8 is a diagram illustrating order of writing data to a certainwrite destination block in the memory system according to theembodiment.

FIG. 9 is a diagram illustrating an operation for transferring writedata from the host to the memory system according to the embodiment in aunit of the same size as a data write unit of a nonvolatile memory.

FIG. 10 is a flowchart illustrating a procedure of data write processingexecuted by the memory system according to the embodiment.

FIG. 11 is a flowchart illustrating a procedure of write data discardprocessing executed by the host.

FIG. 12 is a diagram illustrating dummy data write processing executedby the memory system according to the embodiment, when a next writecommand is not received for a threshold period after a latest writecommand is received.

FIG. 13 is a flowchart illustrating a procedure of dummy data writeprocessing executed by the memory system according to the embodiment.

FIG. 14 is a block diagram illustrating a data transfer operationexecuted by the memory system according to the embodiment using aninternal buffer.

FIG. 15 is a diagram illustrating write processing executed by thememory system according to the embodiment using the internal buffer andprocessing for discarding write data in the internal buffer.

FIG. 16 is a diagram illustrating processing for discarding write datain the internal buffer, executed by the memory system according to theembodiment, when there is no free region in the internal buffer.

FIG. 17 is a flowchart illustrating a procedure of data write processingexecuted by the memory system according to the embodiment using theinternal buffer.

FIG. 18 is a flowchart illustrating a procedure of data read processingexecuted by the memory system according to the embodiment.

FIG. 19 is a diagram illustrating data write processing in which thehost designates a write destination block and the memory systemaccording to the embodiment determines a write destination page and dataread processing in which the host designates a block address and a pageaddress.

FIG. 20 is a diagram illustrating a block allocation command (blockallocation request) applied to the memory system according to theembodiment.

FIG. 21 is a diagram illustrating a response to the block allocationcommand.

FIG. 22 is a diagram illustrating a write command applied to the memorysystem according to the embodiment.

FIG. 23 is a diagram illustrating a response indicating commandcompletion of the write command.

FIG. 24 is a diagram illustrating a read command applied to the memorysystem according to the embodiment.

DETAILED DESCRIPTION

Various embodiments will be described hereinafter with reference to theaccompanying drawings.

In general, according to one embodiment, a memory system connectable toa host includes a nonvolatile memory including a plurality of blocks anda controller electrically connected to the nonvolatile memory andconfigured to manage a plurality of write destination blocks allocatedfrom the blocks, and execute a first write operation involvingtransferring same data to the nonvolatile memory once or more.

The controller receives, from the host, write commands each designatinga location on a memory of the host where write data to be writtenexists, a length of the write data, and an identifier indicating a blockwhere the write data is to be written.

After receiving one or more write commands having a first identifierindicating a first write destination block in the write destinationblocks, the controller acquires, from the host, write data having thesame first size as a data write unit of the nonvolatile memory andobtained by dividing write data associated with one write command in thewrite commands having the first identifier into a plurality of writedata or combining write data associated with two or more write commandsin the write commands having the first identifier. The controller writesthe acquired write data having the first size to the first writedestination block by the first write operation.

First, a relation between a memory system according to the presentembodiment and a host will be described with reference to FIG. 1 .

The memory system is a semiconductor storage device configured to writedata to a nonvolatile memory and to read data from the nonvolatilememory. The memory system is realized as a flash storage device 3 basedon NAND flash technology.

A host (host device) 2 is configured to control a plurality of flashstorage devices 3. The host 2 is realized by an information processingapparatus configured to use a flash array including the flash storagedevices 3 as a storage. The information processing apparatus may be apersonal computer or a server computer.

The flash storage device 3 may be used as one of a plurality of storagedevices provided in the storage array. The storage array may beconnected to the information processing apparatus such as the servercomputer via a cable or a network. The storage array includes acontroller that controls a plurality of storages (for example, the flashstorage devices 3) in the storage array. When the flash storage device 3is applied to the storage array, the controller of the storage array mayfunction as a host of the flash storage device 3.

Hereinafter, the case where the information processing apparatus such asthe server computer functions as the host 2 will be described by way ofexample.

The host (server) 2 and the flash storage devices 3 are interconnectedvia an interface 50 (internal interconnection). The interfaces 50 forthe interconnection is not limited thereto and PCI Express (PCIe)(registered trademark), NVM Express (NVMe) (registered trademark),Ethernet (registered trademark), NVMe over Fabrics (NVMeOF), and thelike can be used as the interface 50.

As a typical example of the server computer functioning as the host 2,there is a server computer (hereinafter, referred to as the server) in adata center.

In the case where the host 2 is realized by the server in the datacenter, the host (server) 2 may be connected to a plurality of end userterminals (clients) 61 via a network 60. The host 2 can provide variousservices to these end user terminals 61.

Examples of the services that can be provided by the host (server) 2include (1) a platform as a service (PaaS) that provides a systemrunning platform to each client (each end user terminal 61), (2) aninfrastructure as a service (IaaS) that provides an infrastructure suchas a virtual server to each client (each end user terminal 61), and thelike.

A plurality of virtual machines may be executed on a physical serverfunctioning as the host (server) 2. Each of the virtual machines runningon the host (server) 2 can function as a virtual server configured toprovide various services to the client (end user terminal 61)corresponding to the virtual machine. In each virtual machine, anoperating system and a user application, which are used by thecorresponding end user terminal 61, are executed. The operating systemcorresponding to each virtual machine includes an I/O service. The I/Oservice may be a block I/O service based on a logical block address(LBA) or a key-value store service. The I/O service may include anaddress translation table for managing the mapping between each of tagsfor identifying data to be accessed and each of physical addresses ofthe flash storage device 3. The tag may be a logical address such as theLBA or a key of a key-value store.

In the operating system corresponding to each virtual machine, the I/Oservice issues an I/O command (a write command and a read command) inresponse to a write/read request from the user application. The I/Ocommand is sent to the flash storage device 3 via a command queue.

The flash storage device 3 includes a nonvolatile memory such as a NANDflash memory. The flash storage device 3 manages a plurality of writedestination blocks allocated from a plurality of blocks in thenonvolatile memory. The write destination block means a block where datais to be written. The write command sent from the host 2 to the flashstorage device 3 designates a location on a memory of the host 2 wherewrite data to be written exists, a length of the write data, and anidentifier indicating the block where the write data is to be written.Therefore, the host 2 can designate a specific write destination blockwhere data is to be written. As a result, for example, the host 2 canrealize data placement in which data of a user application correspondingto a certain end user terminal 61 (client) is written to one or morespecific write destination blocks and data of a user applicationcorresponding to another end user terminal 61 (client) is written to oneor more other specific write destination blocks.

The identifier indicating the block where the write data is to bewritten may be represented by a block address (block number) designatinga specific write destination block. In the case where the flash storagedevice 3 includes a plurality of NAND flash memory chips, the blockaddress may be represented by a combination of a block address and achip number.

In the case where the flash storage device 3 supports stream write, theidentifier indicating the block where the write data is to be writtenmay be an identifier (stream ID) of one stream in a plurality ofstreams. In the stream write, a plurality of write destination blocksare associated with a plurality of streams, respectively. In otherwords, when the flash storage device 3 receives a write commandincluding a certain stream ID from the host 2, the flash storage device3 writes data to a write destination block associated with a streamcorresponding to the stream ID. When the flash storage device 3 receivesa write command including another stream ID from the host 2, the flashstorage device 3 writes data to another write destination blockassociated with another stream corresponding to another stream ID. Inthe flash storage device 3, a management table for managing the mappingbetween each od stream IDs and each of block addresses may be used.

The flash storage device 3 can be realized as any storage device amongthe following type #1-storage device, type #2-storage device, and type#3-storage device.

The type #1-storage device is a type of storage device in which the host2 designates both a block where data is to be written and a page wherethe data is to be written. A write command to be applied to the type#1-storage device includes a block address, a page address, a datapointer, and a length. The block address designates a block where writedata received from the host 2 is to be written. The page addressdesignates a page in the block where the write data is to be written.The data pointer indicates a location on a memory in the host 2 wherethe write data exists. The length indicates a length of the write data.

The type #2-storage device is a type of storage device in which the host2 designates a block where data is to be written and the storage devicedesignates a location (page) in the block where the data is to bewritten. A write command to be applied to the type #2-storage deviceincludes a tag (for example, an LBA or key) for identifying the writedata to be written, a block address, a data pointer, and a length.Further, the write command may include a QoS domain ID. The QoS domainID designates one of a plurality of regions obtained by logicallydividing the NAND flash memory. Each of the regions includes a pluralityof blocks. The type #2-storage device can determine a page where data isto be written, in consideration of bad pages and page write orderrestrictions.

That is, in the case where the flash storage device 3 is realized as thetype #2-storage device, the flash storage device 3 hides page writeorder restrictions, bad pages, page sizes, and the like while causingthe host 2 to handle the block. As a result, the host 2 can recognize ablock boundary and can manage which user data exists in which blockwithout being conscious of the page write order restrictions, the badpages, and the page sizes.

The type #3-storage device is a type of storage device in which the host2 designates a tag (for example, an LBA) for identifying data and thestorage device determines both a block and a page where the data is tobe written. A write command to be applied to the type #3-storage deviceincludes a tag (for example, an LBA or key) for identifying the writedata to be written, a stream ID, a data pointer, and a length. Thestream ID is an identifier of a stream associated with the write data.In the case where the flash storage device 3 is realized as the type#3-storage device, the flash storage device 3 refers to a managementtable for managing the mapping between each of stream IDs and each ofblock addresses and determines a block where the write data is to bewritten. Further, the flash storage device 3 manages the mapping betweeneach of tags (LBAs) and each of physical addresses of the NAND flashmemory by using an address translation table called alogical-to-physical address translation table.

The flash storage device 3 may be any one of the type #1-storage device,the type #2-storage device, and the type #3-storage device. However, theflash storage device 3 manages a plurality of write destination blocksallocated from a plurality of blocks included in the NAND flash memoryand writes write data associated with a certain write command to a writedestination block designated by the write command.

In the type #1-storage device, page write order in the write destinationblock is designated by the host 2. Therefore, in the case where theflash storage device 3 is realized as the type #1-storage device, theflash storage device 3 writes data to each page in the write destinationblock in the order corresponding to the page address designated by eachwrite command from the host 2.

In the type #2-storage device, the write destination block is designatedby the block address included in the write command from the host 2.However, the write destination page in the write destination block isdetermined by the flash storage device 3. Therefore, in the case wherethe flash storage device 3 is realized as the type #2-storage device,the flash storage device 3 determines the write destination page so thatdata is written in order of a first page to a final page of the writedestination block designated by the block address included in the writecommand.

In the type #3-storage device, the flash storage device 3 selects theblock associated with the stream ID included in the write command as thewrite destination block and determines the write destination page in thewrite destination block. Therefore, in the case where the flash storagedevice 3 is realized as the type #3-storage device, the flash storagedevice 3 determines the write destination page so that data is writtenin order of a first page to a final page of the write destination block,for example.

The write destination blocks managed by the flash storage device 3 canbe used by a plurality of end users (clients) sharing the flash storagedevice 3, respectively. In this case, in the flash storage device 3, thewrite destination blocks of which the number is equal to or larger thanthe number of end users sharing the flash storage device 3 aresimultaneously opened.

FIG. 2 illustrates a configuration example of the flash storage device3.

The flash storage device 3 includes a controller 4 and a nonvolatilememory (NAND flash memory) 5. Further, the flash storage device 3 mayinclude a random access memory, for example, a DRAM 6.

The NAND flash memory 5 includes a memory cell array including aplurality of memory cells arranged in a matrix. The NAND flash memory 5may be a NAND flash memory of a two-dimensional structure or a NANDflash memory of a three-dimensional structure.

The memory cell array of the NAND flash memory 5 includes a plurality ofblocks BLK0 to BLKm−1. Each of the blocks BLK0 to BLKm−1 includes aplurality of pages (in this case, pages P0 to Pn−1). The blocks BLK0 toBLKm−1 function as erase units. A block may also be referred to as an“erase block”, a “physical block”, or a “physical erase block”. Thepages P0 to Pn−1 are units of a data write operation and a data readoperation.

The controller 4 is electrically connected to the NAND flash memory 5 tobe the nonvolatile memory via a NAND interface 13 such as a Toggle NANDflash interface and an open NAND flash interface (ONFI). The controller4 operates as a memory controller configured to control the NAND flashmemory 5. The controller 4 may be realized by a circuit such as asystem-on-a-chip (SoC).

As illustrated in FIG. 3 , the NAND flash memory 5 may include aplurality of NAND flash memory chips (NAND flash memory dies). Each ofthe NAND flash memory chips can operate independently. Therefore, theNAND flash memory chip functions as a unit in which a parallel operationis enabled. In FIG. 3 , the case where 16 channels Ch.1 to Ch.16 areconnected to the NAND interface 13 and two NAND flash memory chips areconnected to each of the 16 channels Ch.1 to Ch.16 is exemplified. Inthis case, 16 NAND flash memory chips #1 to #16 connected to thechannels Ch.1 to Ch.16 may be organized as a bank #0 and the remaining16 NAND flash memory chips #17 to #32 connected to the channels Ch.1 toCh.16 may be organized as a bank #1. The bank functions as a unit foroperating a plurality of memory modules in parallel by bankinterleaving. In the configuration example of FIG. 3 , a maximum of 32NAND flash memory chips can be operated in parallel by the 16 channelsand the bank interleaving using the two banks.

An erase operation may be executed in a unit of one block (physicalblock) or may be executed in a unit of a parallel unit (super block)including a set of physical blocks that can operate in parallel. Oneparallel unit, that is, one super block including the set of physicalblocks is not limited thereto and may include a total of 32 physicalblocks selected one by one from the NAND flash memory chips #1 to #32.Each of the NAND flash memory chips #1 to #32 may have a multi-planeconfiguration. For example, in the case where each of the NAND flashmemory chips #1 to #32 has a multi-plane configuration including twoplanes, one super block may include a total of 64 physical blocksselected one by one from 64 planes corresponding to the NAND flashmemory chips #1 to #32.

In FIG. 4 , one super block (SB) including 32 physical blocks (in thiscase, a physical block BLK2 in the NAND flash memory chip #1, a physicalblock BLK3 in the NAND flash memory chip #2, a physical block BLK7 inthe NAND flash memory chip #3, a physical block BLK4 in the NAND flashmemory chip #4, a physical block BLK6 in the NAND flash memory chip #5,. . . , and a physical block BLK3 in the NAND flash memory chip #32) isexemplified.

The write destination block may be one physical block or one superblock. A configuration where one super block includes only one physicalblock may be used. In this case, one super block is equivalent to onephysical block.

Next, a configuration of the controller 4 of FIG. 2 will be described.

The controller 4 includes a host interface 11, a CPU 12, a NANDinterface 13, a DRAM interface 14, a direct memory access controller(DMAC) 15, an ECC encoding/decoding unit 16, and the like. The hostinterface 11, the CPU 12, the NAND interface 13, the DRAM interface 14,the DMAC 15, and the ECC encoding/decoding unit 16 are interconnectedvia the bus 10.

The host interface 11 is a host interface circuit configured to executecommunication with the host 2.

The host interface 11 may be, for example, a PCIe controller (NVMecontroller). Alternatively, in a configuration in which the flashstorage device 3 is connected to the host 2 via Ethernet (registeredtrademark), the host interface 11 may be an NVMe over Fabrics (NVMeOF)controller.

The host interface 11 receives various commands from the host 2. Thesecommands include a write command, a read command, and various othercommands.

The CPU 12 is a processor configured to control the host interface 11,the NAND interface 13, and the DRAM interface 14. In response topower-on of the flash storage device 3, the CPU 12 loads a controlprogram (firmware) from the NAND flash memory 5 or a ROM (notillustrated in the drawings) onto the DRAM 6 and executes variousprocessing by executing the firmware. The firmware may be loaded on anSRAM (not illustrated in the drawings) in the controller 4. The CPU 12can execute command processing for processing the various commands fromthe host 2. An operation of the CPU 12 is controlled by the firmwareexecuted by the CPU 12. A part or all of the command processing may beexecuted by dedicated hardware in the controller 4.

The CPU 12 can function as a write control unit 21 and a read controlunit 22. A part or all of each of the write control unit 21 and the readcontrol unit 22 may also be realized by the dedicated hardware in thecontroller 4.

The write control unit 21 manages the write destination blocks allocatedfrom the blocks of the NAND flash memory 5. In many modern NAND flashmemories, complicated write operations are often executed to reduceprogram disturb. For this reason, in the many modern NAND flashmemories, even if data is written to a certain page in the block, thedata written to this page cannot be normally read immediately afterwriting the data, and after completion of writing of data to one or morepages subsequent to this page, the data may be read from this page.

Further, in the modern NAND flash memories, a multi-step write operationinvolving transferring the same write data to the NAND flash memorymultiple times is also applied. An example of the multi-step writeoperation is a foggy-fine write operation.

The multi-step write operation includes at least a first write operationstep such as a foggy write operation and a second write operation stepsuch as a fine write operation. The foggy write operation is a writeoperation for roughly setting a threshold distribution of each memorycell and the fine write operation is a write operation for adjusting thethreshold distribution of each memory cell.

Furthermore, an intermediate write operation may be executed between thefoggy write operation and the fine write operation.

The write control unit 21 may write the write data to the writedestination block by a write operation (multi-step write operation)involving transferring the same write data to the NAND flash memory 5multiple times like the foggy-fine write operation or may write thewrite data to the write destination block by a write operation involvingtransferring the write data to the NAND flash memory 5 once like afull-sequence write operation or other various write operations.

The write control unit 21 receives each write command from the host 2.Each write command designates a location on the memory of the host 2where write data to be written exists, a length of the write data, andan identifier indicating a block where the write data is to be written.

The length of the write data is different for each write command. Forexample, a certain write command may request writing of large-sizedwrite data of, for example, about 1 Mbyte and another write command mayrequest writing of small-sized write data of, for example, about 4Kbytes. Therefore, if a method in which the flash storage device 3simply transfers the write data of the size designated by each writecommand from the host 2 to an internal buffer of the flash storagedevice 3 is used, the internal buffer may be occupied by large-sizedwrite data to be written to a specific write destination block for along time and a data write operation for each of the other writedestination blocks may not be executed. As a result, it becomesdifficult to simultaneously use a plurality of write destination blocks.

Therefore, the write control unit 21 acquires the write data from thehost 2 in a unit of the same data size as the data write unit of theNAND flash memory 5, regardless of the size designated by each writecommand. The data write unit of the NAND flash memory 5 means a datatransfer size for writing data to the NAND flash memory 5. A typicalexample of the data write unit of the NAND flash memory 5 is a page size(for example, 16 Kbytes). Alternatively, a data size (size multipletimes as large as the page size) corresponding to a plurality of pagesmay be used as the data write unit.

When a size of write data associated with a write command designating acertain write destination block is smaller than the data write unit ofthe NAND flash memory 5, the write control unit 21 waits for a nextwrite command designating the write destination block. When a total sizeof some write data associated with some write commands designating thewrite destination block becomes equal to or larger than the data writeunit of the NAND flash memory 5, the write control unit 21 acquires,from the host 2, data of the same size as the data write unit of theNAND flash memory 5 that is obtained by combining the write data. Forexample, in the case where four write commands designating the samewrite destination block request writing of four write data each having 4Kbytes, respectively, the write control unit 21 may acquire, from thehost 2, write data of 16 Kbytes obtained by combining the four writedata of 4 Kbytes with each other. In this case, the write control unit21 may sequentially acquire the four write data of 4 Kbytes from thehost 2 by four DMA transfers. The write control unit 21 transfers theacquired write data having the same size as the data write unit of theNAND flash memory 5 to the NAND flash memory 5 and writes the write datato the write destination block of the NAND flash memory 5.

On the other hand, when a size of write data associated with a writecommand designating a certain write destination block is larger than thedata write unit of the NAND flash memory 5, the write control unit 21obtains one or more write data having the same size as the data writeunit, obtained by dividing the write data into a plurality of write data(a plurality of data portions). In addition, the write control unit 21acquires the obtained single write data having the same size as the datawrite unit from the host 2. In this case, the write control unit 21 mayacquire the obtained write data from the host 2 by one DMA transfer. Thewrite control unit 21 transfers the acquired write data having the samesize as the data write unit of the NAND flash memory 5 to the NAND flashmemory 5 and writes the write data to the write destination block of theNAND flash memory 5.

As described above, after receiving one or more write commands having anidentifier indicating the same write destination block, the writecontrol unit 21 acquires, from the host 2, write data having the samesize as the data write unit of the NAND flash memory 5, obtained bydividing the write data associated with one write command in thereceived write commands into a plurality of write data (a plurality ofdata portions) or combining the write data associated with two or morewrite commands in the received write commands.

Here, the division/combination of the write data means an operation for,based on a data pointer and a length designated by each of one or morewrite commands having an identifier indicating the same writedestination block, (i) dividing a set of write data associated with oneor more write commands by boundaries having the same size as the datawrite unit of the NAND flash memory 5 from a head thereof and (ii)specifying a location in the host memory corresponding to each boundary.

Therefore, the write data can be acquired from the host 2 in a unit ofthe same data size as the data write unit of the NAND flash memory 5,regardless of the size of the write data designated by each writecommand, so that the acquired write data can be immediately transferredto the NAND flash memory 5. Therefore, even if a write commandrequesting writing of large-sized write data to a certain writedestination block is received, it is possible to prevent stagnation of adata write operation for other write destination block due to this.

Further, a buffer-less configuration in which an internal buffer doesnot exist in the flash storage device 3 or the capacity of the internalbuffer is nearly zero can be applied to the flash storage device 3.

In the case where a plurality of write destination blocks belong todifferent NAND flash memory chips, respectively, the operation fortransferring the write data to the NAND flash memory 5 meanstransferring the write data to the NAND flash memory chip including thewrite destination block where the write data is to be written.

The above processing for acquiring the write data from the host 2 in aunit of the same data size as the data write unit of the NAND flashmemory 5 is executed in accordance with the progress of the writeoperation for each write destination block.

That is, the write control unit 21 manages the progress of the writeoperation for each write destination block. In addition, for example,whenever data transfer to a next write destination page of a certainwrite destination block is enabled, the write control unit 21 advances alocation of the write destination page in the write destination block,acquires write data to be written to the next write destination pagefrom the host memory, and writes the acquired write data to the writedestination block.

Furthermore, when all of the write operation (write operation fortransferring the same data to the NAND flash memory 5 once or more) forthe entire write data associated with one write command designating thecertain write destination block is finished, the write control unit 21returns a response indicating command completion of the write command tothe host 2.

For example, in the case where large-sized write data associated withone write command is divided into a plurality of write data portions,when all data transfers and all write operations necessary for writingall of the write data portions are finished, a response indicatingcommand completion of the write command is returned to the host 2. As aresult, it is possible to correctly notify the host 2 of the commandcompletion in a unit of the write command. Therefore, even whenlarge-sized write data requested to be written by one write command isdivided into a plurality of write data portions and processed, the host2 can correctly receive only a response indicating command completion ofone write command from the flash storage device 3. Therefore, the host 2may perform only simple processing for discarding the write datacorresponding to the write command of which the command completion hasbeen given in notification, from the host memory.

Further, when all of a write operation (write operation involvingtransferring the same data to the NAND flash memory 5 once or more) forthe entire write data associated with one write command designating acertain write destination block is finished and the entire write databecomes readable from the NAND flash memory 5, the write control unit 21may return a response indicating command completion of the write commandto the host 2.

For example, the case where data written to a certain page of a certainwrite destination block becomes readable after data is written to one ormore subsequent pages is assumed. In this case, when all data transfersand all write operations necessary for writing all of a plurality ofwrite data portions obtained by dividing the large-sized write dataassociated with one write command are finished, the write control unit21 does not return a response indicating command completion to the host2. After data is written to one or more subsequent pages, the writecontrol unit 21 returns a response indicating the command completion ofthe write command to the host 2.

As a result, the host 2 performs only simple processing for discardingthe write data corresponding to the write command of which the commandcompletion has been given in notification, from the host memory, therebymaintaining the write data in the host memory until the write data ofeach write command becomes readable.

The read control unit 22 receives a read command from the host 2 andreads data designated by the received read command from the NAND flashmemory 5 or an internal buffer 31.

When the data (first data) designated by the read command is data inwhich all of the write operation (write operation involving transferringthe same data to the NAND flash memory 5 once or more) has not beenfinished or data in which all of the write operation has been finished,but which has not yet become readable from the NAND flash memory 5, theread control unit 22 determines whether the first data exists in theinternal buffer 31. In the case where the first data does not exist inthe internal buffer 31, the read control unit 22 acquires the first datafrom the host memory, stores the acquired first data in the internalbuffer 31, and returns the acquired first data from the internal buffer31 to the host 2. As a result, the host 2 does not perform complicatedprocessing for managing whether data desired to be read is readable fromthe NAND flash memory 5 and performs only simple processing for sendinga read command designating the data desired to be read to the flashstorage device 3, thereby receiving the data desired to be read from theflash storage device 3.

The NAND interface 13 is a memory control circuit configured to controlthe NAND flash memory 5 under the control of the CPU 12.

The DRAM interface 14 is a DRAM control circuit configured to controlthe DRAM 6 under the control of the CPU 12. A part of the storage regionof the DRAM 6 may be used as the internal buffer (shared cache) 31. Theinternal buffer (shared cache) 31 is shared by a plurality of writedestination blocks and is used for temporarily storing write dataassociated with an arbitrary write command received from the host 2. Asdescribed above, the buffer-less configuration where the internal buffer(shared cache) 31 does not exist in the flash storage device 3 or thecapacity of the internal buffer (shared cache) 31 is nearly zero may beapplied to the flash storage device 3.

Further, another part of the storage region of the DRAM 6 may be usedfor storing a block management table 32 and a defect informationmanagement table 33. The block management table 32 includes a pluralityof management tables corresponding to a plurality of blocks in the NANDflash memory 5. Each management table includes a plurality ofvalid/invalid management information corresponding to a plurality ofdata included in the block corresponding to the management table. Eachof the valid/invalid management information indicates whether the datacorresponding to the valid/invalid management information is valid dataor invalid data. The defect information management table 33 manages alist of defective blocks (bad blocks).

The internal buffer (shared cache) 31, the block management table 32,and the defect information management table 33 may be stored in an SRAM(not illustrated in the drawings) in the controller 4.

The DMAC 15 executes data transfer between the host memory and theinternal buffer (shared cache) 31 under the control of the CPU 12. Whenthe write data is to be transferred from the host memory to the internalbuffer (shared cache) 31, the CPU 12 designates a transfer sourceaddress indicating a location on the host memory, a data size, and atransfer destination address indicating a location on the internalbuffer (shared cache) 31, with respect to the DMAC 15.

When data is to be written to the NAND flash memory 5, the ECCencoding/decoding unit 16 encodes the data (data to be written) (ECCencoding), thereby adding an error correction code (ECC) as a redundantcode to the data. When data is read from the NAND flash memory 5, theECC encoding/decoding unit 16 performs error correction of the data (ECCdecoding) by using the ECC added to the read data.

FIG. 5 illustrates a relation between a write data buffer 51 and a flashtranslation unit 52 included in the host 2 and the write control unit21, the DMAC 15, and the internal buffer (shared cache) 31 included inthe flash storage device 3.

The host 2 stores the write data in the write data buffer 51 on the hostmemory and issues a write command to the flash storage device 3. Thewrite command may include a data pointer indicating a location on thewrite data buffer 51 where the write data exists, a tag (for example, anLBA) for identifying the write data, a length of the write data, and anidentifier (a block address or a stream ID) indicating a block where thewrite data is to be written.

In the flash storage device 3, under the control of the write controlunit 21, in accordance with the progress of the write operation of thewrite destination block designated by the identifier of the block, thedata transfer from the write data buffer 51 to the internal buffer(shared cache) 31 is executed by the DMAC 15. The data transfer isexecuted in a unit of the same data size as the data write unit of theNAND flash memory 5, as described above. Under the control of the writecontrol unit 21, the write data to be written is transferred from theinternal buffer (shared cache) 31 to the NAND flash memory chipincluding the write destination block and a NAND command for a writeinstruction is sent from the write control unit 21 to the NAND flashmemory chip.

In the case where the flash storage device 3 is realized as the type#2-storage device, the write control unit 21 also executes processingfor allocating one of free blocks as the write destination block to thehost 2 in response to a block allocation request received from the host2. The block allocation request may include a QoS domain ID. The writecontrol unit 21 determines one of the free blocks belonging to the QoSdomain ID as the write destination block and notifies the host 2 of theblock address of the write destination block. As a result, the host 2can issue a write command designating the block address, the datapointer, the tag (for example, the LBA), and the length. After the writedata is written to the write destination block, the write control unit21 notifies the host 2 of the block address indicating the writedestination block where the write data has been written, the pageaddress indicating the page in the write destination block where thewrite data has been written, and the tag (for example, the LBA) of thewrite data. The flash translation unit 52 of the host 2 includes an LUT404A to be an address translation table for managing the mapping betweeneach of tags (for example, the LBAs) and each of physical addresses(block addresses, page addresses, and the like) of the NAND flash memory5. When the block address, the page address, and the tag (for example,the LBA) are given in notification from the flash storage device 3, theflash translation unit 52 updates the LUT 404A and maps the physicaladdress (the block address and the page address) given in notificationto the tag (for example, the LBA) given in notification. By referring tothe LUT 404A, the flash translation unit 52 can translate the tag (forexample, the LBA) included in the read request into the physical address(the block address and the page address), thereby issuing the readcommand including the physical address to the flash storage device 3.

FIG. 6 illustrates I/O command processing executed by the flash storagedevice 3.

As described above, in the present embodiment, the flash storage device3 may be any one of the type #1-storage device, the type #2-storagedevice, and the type #3-storage device. However, in FIG. 6 , the casewhere the flash storage device 3 is the type #1-storage device isexemplified.

Each write command issued by the host 2 includes a block address, a pageaddress, a data pointer, and a length. Each issued write command isinput to an I/O command queue 42. Each read command issued by the host 2also includes a block address, a page address, a data pointer, and alength. Each issued read command is also input to the I/O command queue42.

When the host 2 desires to request the flash storage device 3 to writethe write data, the host 2 first stores the write data in the write databuffer 51 on the host memory and issues the write command to the flashstorage device 3. The write command includes a block address indicatinga write destination block where the write data is to be written, a pageaddress indicating a page in the write destination block where the writedata is to be written, a data pointer indicating a location in the writedata buffer 51 where the write data exists, and a length of the writedata.

The flash storage device 3 includes a program/read sequencer 41. Theprogram/read sequencer 41 is realized by the write control unit 21 andthe read control unit 22 described above. The program/read sequencer 41can execute each command input to the I/O command queue 42 in arbitraryorder.

After the program/read sequencer 41 acquires one or more write commandsdesignating the same write destination block from the I/O command queue42, the program/read sequencer 41 sends, to the internal buffer (sharedcache) 31, a transfer request to acquire next write data (for example,write data corresponding to one page size) to be written to the writedestination block from the internal buffer (shared cache) 31 or thewrite data buffer 51, in accordance with the progress of the writeoperation of the write destination block. The transfer request mayinclude a data pointer and a length. The data pointer included in thetransfer request is calculated by processing for dividing the write dataassociated with one write command or combining two or more write dataassociated with two or more write commands designating the same writedestination block. That is, the program/read sequencer 41 divides a setof write data associated with one or more write commands having anidentifier indicating the same write destination block by boundarieshaving the same size as the data write unit of the NAND flash memory 5from a head thereof and specifies a location in the host memorycorresponding to each boundary. As a result, the program/read sequencer41 can acquire the write data from the host 2 in a unit of the same sizeas the write unit.

The data pointer included in the transfer request indicates a locationon the write data buffer 51 where the write data corresponding to onepage size exists. The write data corresponding to one page size may be aset of a plurality of small-sized write data associated with a pluralityof write commands designating the write destination block or may be apart of large-sized write data associated with one write commanddesignating the write destination block.

Furthermore, the program/read sequencer 41 sends, to the internal buffer(shared cache) 31, the block address of the write destination blockwhere the write data corresponding to one page size is to be written andthe page address of the page to which the write data corresponding toone page size is to be written.

The controller 4 of the flash storage device 3 may include a cachecontroller controlling the internal buffer (shared cache) 31. In thiscase, the cache controller can operate the internal buffer (sharedcache) 31 as if it is control logic. A plurality of flash command queues43 exist between the internal buffer (shared cache) 31 and a pluralityof write destination blocks #0, #1, #2, . . . , and #n. These flashcommand queues 43 are associated with a plurality of NAND flash memorychips, respectively.

The internal buffer (shared cache) 31, that is, the cache controllerdetermines whether the write data corresponding to one page sizedesignated by the transfer request exists in the internal buffer (sharedcache) 31.

If the write data corresponding to one page size designated by thetransfer request exists in the internal buffer (shared cache) 31, theinternal buffer (shared cache) 31, that is, the cache controllertransfers the write data corresponding to one page size to the NANDflash memory chip including the write destination block where the writedata is to be written. Further, the internal buffer (shared cache) 31,that is, the cache controller sends, to the NAND flash memory chipincluding the write destination block where the write data is to bewritten, the block address of the write destination block, the pageaddress where the write data is to be written, and the NAND command(flash write command) for the write instruction via the flash commandqueue 43. The flash command queue 43 is provided for each NAND flashmemory chip. For this reason, the internal buffer (shared cache) 31,that is, the cache controller inputs, to the flash command queue 43corresponding to the NAND flash memory chip including the writedestination block where the write data is to be written, the blockaddress of the write destination block, the page address where the writedata is to be written, and the NAND command (flash write command) forthe write instruction.

If the transfer of the write data corresponding to one page size fromthe internal buffer (shared cache) 31 to the NAND flash memory chip isfinal data transfer necessary for writing the write data to the NANDflash memory chip, the internal buffer (shared cache) 31, that is, thecache controller discards the write data from the internal buffer(shared cache) 31 and secures the region where the write data has beenstored as a free region. In the case where the write data is written tothe write destination block by the write operation (for example, thefull-sequence write operation and the like) involving transferring datato the NAND flash memory chip once, the first data transfer to the NANDflash memory chip becomes the final data transfer. On the other hand, inthe case where the write data is written to the write destination blockby the write operation (for example, the foggy-fine write operation)involving transferring data to the NAND flash memory chip multipletimes, the data transfer to the NAND flash memory chip necessary for thefinal fine write becomes the final data transfer.

Next, the case where the write data corresponding to one page sizedesignated by the transfer request does not exist in the internal buffer(shared cache) 31 will be described.

If the write data corresponding to one page size designated by thetransfer request does not exist in the internal buffer (shared cache)31, the internal buffer (shared cache) 31, that is, the cache controllersends the transfer request (the data pointer and the length) to the DMAC15. The DMAC 15 transfers the write data corresponding to one page sizefrom the write data buffer 51 on the host memory to the internal buffer(shared cache) 31, based on the transfer request (the data pointer andthe length). If the data transfer is finished, the DMAC 15 notifies theinternal buffer (shared cache) 31, that is, the cache controller, of thetransfer completion (Done), the data pointer, and the length.

If the free region exists in the internal buffer (shared cache) 31, theinternal buffer (shared cache) 31, that is, the cache controller storesthe write data acquired from the write data buffer 51 by the DMAtransfer in the free region.

If the free region does not exist in the internal buffer (shared cache)31, the internal buffer (shared cache) 31, that is, the cache controllerdiscards the oldest write data in the internal buffer (shared cache) 31from the internal buffer (shared cache) 31 and secures a region wherethe oldest write data has been stored as a free region. In addition, theinternal buffer (shared cache) 31, that is, the cache controller storesthe write data acquired from the write data buffer 51 by the DMAtransfer in the free region.

In the case where the multi-step write operation such as the foggy-finewrite operation is used, the cache controller discards the oldest writedata among the write data in the internal buffer (shared cache) 31 inwhich the first write operation step such as the foggy write operationis finished.

A progress speed of the data write operation for the write destinationblock having a large data write amount tends to be faster than aprogress speed of the data write operation for the write destinationblock having a small data write amount. Therefore, the write data to bewritten to the write destination block having the large data writeamount is frequently transferred from the write data buffer 51 to theinternal buffer (shared cache) 31. As a result, there is a highpossibility that the oldest write data is write data to a writedestination block having a relatively small amount of data written fromthe host 2. Therefore, by using a method of discarding the oldest writedata among the write data in the internal buffer (shared cache) 31 inwhich the first write operation step such as the foggy write operationis finished, it is possible to efficiently reduce data traffic betweenthe host 2 and the flash storage device 3.

An algorithm for selecting the write data to be discarded among thewrite data in the internal buffer (shared cache) 31 in which the firstwrite operation step such as the foggy write operation is finished isnot limited to first in first out for selecting the oldest data andother algorithms such as LRU and random may be used.

The program/read sequencer 41 receives a status, that is, writecompletion (Done), a write failure (Error), a block address, and a pageaddress from each NAND flash memory chip. In addition, the program/readsequencer 41 determines whether all of a write operation (writeoperation for transferring the same data to the NAND flash memory chiponce or more) for entire write data associated with a write command hasbeen finished, for each write command, based on the status. When all ofa write operation for entire write data associated with a certain writecommand is finished, the program/read sequencer 41 transmits a response(Done) indicating the command completion of the write command to thehost 2. The response (Done) indicating the command completion includes acommand ID for uniquely identifying the write command.

Next, processing of the read command will be described.

The read command includes a block address indicating a block where datato be read is stored, a page address indicating a page where the data isstored, a data pointer indicating a location in the read data buffer 53on the host memory to which the data is to be transferred, and a lengthof the data.

The program/read sequencer 41 sends the block address and the pageaddress designated by the read command to the internal buffer (sharedcache) 31 and requests the internal buffer (shared cache) 31 to read thedata designated by the read command.

The internal buffer (shared cache) 31, that is, the cache controllersends, to the NAND flash memory chip, the block address, the pageaddress, and the NAND command (flash read command) for the readinstruction via the flash command queue 43. The data read from the NANDflash memory chip is transferred to the read data buffer 53 by the DMAC15.

When the data designated by the read command is data in which the writeoperation has not been finished or data in which all of the writeoperation has been finished, but which has not yet become readable fromthe NAND flash memory 5, the internal buffer (shared cache) 31, that is,the cache controller may determine whether the data exists in theinternal buffer (shared cache) 31. If the data exists in the internalbuffer (shared cache) 31, the data is read from the internal buffer(shared cache) 31 and transferred to the read data buffer 53 by the DMAC15.

On the other hand, if the data does not exist in the internal buffer(shared cache) 31, the data is first transferred from the write databuffer 51 to the internal buffer (shared cache) 31 by the DMAC 15. Inaddition, the data is read from the internal buffer (shared cache) 31and transferred to the read data buffer 53 by the DMAC 15.

FIG. 7 illustrates a multi-step write operation executed by the flashstorage device 3.

Here, a foggy-fine write operation executed across four word lines isexemplified. Here, the case where the NAND flash memory 5 is a QLC-flashstoring 4-bit data per memory cell is assumed. The foggy-fine writeoperation for one specific write destination block (here, the writedestination block BLK #1) in the NAND flash memory 5 is executed asfollows.

(1) First, write data of four pages (P0 to P3) is transferred to theNAND flash memory 5 in a page unit and the foggy write operation forwriting the write data of the four pages (P0 to P3) into a plurality ofmemory cells connected to a word line WL0 in the write destination blockBLK #1 is executed.

(2) Next, write data of next four pages (P4 to P7) is transferred to theNAND flash memory 5 in a page unit and the foggy write operation forwriting the write data of the four pages (P4 to P7) into a plurality ofmemory cells connected to a word line WL1 in the write destination blockBLK #1 is executed.

(3) Next, write data of next four pages (P8 to P11) is transferred tothe NAND flash memory 5 in a page unit and the foggy write operation forwriting the write data of the four pages (P8 to P11) into a plurality ofmemory cells connected to a word line WL2 in the write destination blockBLK #1 is executed.

(4) Next, write data of next four pages (P12 to P15) is transferred tothe NAND flash memory 5 in a page unit and the foggy write operation forwriting the write data of the four pages (P12 to P15) into a pluralityof memory cells connected to a word line WL3 in the write destinationblock BLK #1 is executed.

(5) When the foggy write operation for the memory cells connected to theword line WL3 is finished, a write target word line returns to the wordline WL0 and the fine write operation for the memory cells connected tothe word line WL0 can be executed. In addition, the same write data offour pages (P0 to P3) as the write data of the four pages (P0 to P3)used in the foggy write operation for the word line WL0 is transferredagain to the NAND flash memory 5 in a page unit and the fine writeoperation for writing the write data of the four pages (P0 to P3) intothe memory cells connected to the word line WL0 in the write destinationblock BLK #1 is executed. As a result, the foggy-fine write operationfor the pages P0 to P3 is finished.

(6) Next, write data of next four pages (P16 to P19) is transferred tothe NAND flash memory 5 in a page unit and the foggy write operation forwriting the write data of the four pages (P16 to P19) into a pluralityof memory cells connected to a word line WL4 in the write destinationblock BLK #1 is executed.

(7) When the foggy write operation for the memory cells connected to theword line WL4 is finished, a write target word line returns to the wordline WL1 and the fine write operation for the memory cells connected tothe word line WL1 can be executed. In addition, the same write data offour pages (P4 to P7) as the write data of the four pages (P4 to P7)used in the foggy write operation for the word line WL1 is transferredagain to the NAND flash memory 5 in a page unit and the fine writeoperation for writing the write data of the four pages (P4 to P7) intothe memory cells connected to the word line WL1 in the write destinationblock BLK #1 is executed. As a result, the foggy-fine write operationfor the pages P4 to P7 is finished.

(8) Next, write data of next four pages (P20 to P23) is transferred tothe NAND flash memory 5 in a page unit and the foggy write operation forwriting the write data of the four pages (P20 to P23) into a pluralityof memory cells connected to a word line WL5 in the write destinationblock BLK #1 is executed.

(9) When the foggy write operation for the memory cells connected to theword line WL5 is finished, a write target word line returns to the wordline WL2 and the fine write operation for the memory cells connected tothe word line WL2 can be executed. In addition, the same write data offour pages (P8 to P11) as the write data of the four pages (P8 to P11)used in the foggy write operation for the word line WL2 is transferredagain to the NAND flash memory 5 in a page unit and the fine writeoperation for writing the write data of the four pages (P8 to P11) intothe memory cells connected to the word line WL2 in the write destinationblock BLK #1 is executed. As a result, the foggy-fine write operationfor the pages P8 to P11 is finished.

FIG. 8 illustrates order of writing data to the write destination blockBLK #1.

Here, similarly to FIG. 7 , the case where the foggy-fine writeoperation is executed across four word lines is assumed.

Data d0, data d1, data d2, data d3, data d4, data d5, data d6, data d7,. . . , data d252, data d253, data d254, and data d255 illustrated in aleft portion of FIG. 8 indicate a plurality of write data correspondingto a plurality of write commands designating the write destination blockBLK #1. Here, for the sake of simplification of illustration, the casewhere all the write data have the same size is assumed.

A right portion of FIG. 8 illustrates order of writing data to the writedestination block BLK #1. The write operation is performed in order ofwriting data d0 to a plurality of memory cells connected to the wordline WL0 (foggy write), writing data d1 to a plurality of memory cellsconnected to the word line WL1 (foggy write), writing data d2 to aplurality of memory cells connected to the word line WL2 (foggy write),writing data d3 to a plurality of memory cells connected to the wordline WL3 (foggy write), writing data d0 to the plurality of memory cellsconnected to the word line WL0 (fine write), writing data d4 to aplurality of memory cells connected to the word line WL4 (foggy write),writing data d1 to the plurality of memory cells connected to the wordline WL1 (fine write), writing data d5 to a plurality of memory cellsconnected to the word line WL5 (foggy write), writing data d2 to theplurality of memory cells connected to the word line WL2 (fine write), .. . .

FIG. 9 illustrates an operation for transferring write data from thehost 2 to the flash storage device 3 in a unit of the same size as thedata write unit of the NAND flash memory 5.

Data d1, data d2, data d3, data d4, data d5, data d6, data d7, data d8,data d9, data d10, illustrated in a left portion of FIG. 9 indicate tenwrite data corresponding to ten write commands designating the writedestination block BLK #1. The length (size) of the write data isdifferent for each write command. In FIG. 9 , the case where each of thedata d1, the data d2, the data d3, and the data d4 has a size of 4Kbytes, the data d5 has a size of 8 Kbytes, the data d6 has a size of 40Kbytes, the data d7 has a size of 16 Kbytes, each of the data d8 and thedata d9 has a size of 8 Kbytes, and the data d10 has a size of 1 Mbyteis assumed.

Since each write command received from the host 2 includes a datapointer, a length, and a block identifier (for example, a blockaddress), the controller 4 of the flash storage device 3 can classifythe write commands received from the host 2 into a plurality of groupscorresponding to a plurality of write destination blocks. The data d1,the data d2, the data d3, the data d4, the data d5, the data d6, thedata d7, the data d8, the data d9, the data d10, correspond to ten writecommand classified into a group corresponding to the write destinationblock BLK #1. These ten write commands are write commands including ablock identifier (for example, a block address) indicating the writedestination block BLK #1.

The controller 4 of the flash storage device 3 manages a location on thewrite data buffer 51 where each of the data d1, the data d2, the datad3, the data d4, the data d5, the data d6, the data d7, the data d8, thedata d9, and the data d10 exists and a length of each of the data d1,the data d2, the data d3, the data d4, the data d5, the data d6, thedata d7, the data d8, the data d9, and the data d10, based on the datapointer and the length in each of the write commands designating thewrite destination block BLK #1. In addition, the controller 4 acquires,from the host 2, write data having the same size as the data write unitof the NAND flash memory 5, which is obtained by dividing large-sizedwrite data associated with one write command into a plurality of writedata (a plurality of data portions) or combining two or more small-sizedwrite data associated with the two or more write commands.

In FIG. 9 , the controller 4 first acquires write data of 16 Kbytesobtained by combining the data d1, the data d2, the data d3, and thedata d4 each having a size of 4 Kbytes, from the write data buffer 51 ofthe host 2. In this case, although not limited thereto, the controller 4may transfer write data of 16 Kbytes from the write data buffer 51 ofthe host 2 to the internal buffer 31 by four DMA transfers. In the firstDMA transfer, a transfer source address designating a head location ofthe data d1 and a data length=4 KB may be set to the DMAC 15. Thetransfer source address designating the head location of the data d1 isrepresented by the data pointer in the write command corresponding tothe data d1. In the second DMA transfer, a transfer source addressdesignating a head location of the data d2 and a data length=4 KB may beset to the DMAC 15. The transfer source address designating the headlocation of the data d2 is represented by the data pointer in the writecommand corresponding to the data d2. In the third DMA transfer, atransfer source address designating a head location of the data d3 and adata length=4 KB may be set to the DMAC 15. The transfer source addressdesignating the head location of the data d3 is represented by the datapointer in the write command corresponding to the data d3. In the fourthDMA transfer, a transfer source address designating a head location ofthe data d4 and a data length=4 KB may be set to the DMAC 15. Thetransfer source address designating the head location of the data d4 isrepresented by the data pointer in the write command corresponding tothe data d4.

In addition, the controller 4 transfers the write data (d1, d2, d3, andd4) of 16 KBytes acquired by the DMA transfer as data to be written tothe page P0 of the write destination block BLK #1 to the NAND flashmemory 5.

The controller 4 changes a next write destination page of the writedestination block BLK #1 to the page P1 and acquires write data of 16Kbytes obtained by combining the data d5 having a size of 8 Kbytes andhead data d6-1 of 8 Kbytes in the data d6 from the write data buffer 51of the host 2. In this case, although not limited thereto, thecontroller 4 may transfer write data of 16 Kbytes from the write databuffer 51 of the host 2 to the internal buffer 31 by two DMA transfers.In the first DMA transfer, a transfer source address designating a headlocation of the data d5 and a data length=8 KB may be set to the DMAC15. The transfer source address designating the head location of thedata d5 is represented by the data pointer in the write commandcorresponding to the data d5. In the second DMA transfer, a transfersource address designating a head location of the data d6-1 and a datalength=8 KB may be set to the DMAC 15. The transfer source addressdesignating the head location of the data d6-1 is represented by thedata pointer in the write command corresponding to the data d6.

In addition, the controller 4 transfers the write data (d5 and d6-1) of16 Kbytes as data to be written to the page P1 of the write destinationblock BLK #1 to the NAND flash memory 5.

The controller 4 changes a next write destination page of the writedestination block BLK #1 to the page P2 and acquires first 16 Kbyte datad6-2 among the remaining 32 Kbyte data of the data d6 from the writedata buffer 51 of the host 2. In this case, although not limitedthereto, the controller 4 may transfer write data of 16 Kbytes from thewrite data buffer 51 of the host 2 to the internal buffer 31 by one DMAtransfer. In the DMA transfer, a transfer source address designating ahead location of the data d6-2 and a data length=16 KB may be set to theDMAC 15. The transfer source address designating the head location ofthe data d6-2 can be obtained by adding an offset corresponding to 8 KBto a value of the data pointer in the write command corresponding to thedata d6.

In addition, the controller 4 transfers the write data (d6-2) of 16Kbytes as data to be written to the page P2 of the write destinationblock BLK #1 to the NAND flash memory 5.

The controller 4 changes a next write destination page of the writedestination block BLK #1 to the page P3 and acquires the remaining 16Kbyte data d6-3 of the data d6 from the write data buffer 51 of the host2.

In this case, although not limited thereto, the controller 4 maytransfer write data of 16 Kbytes from the write data buffer 51 of thehost 2 to the internal buffer 31 by one DMA transfer. In the DMAtransfer, a transfer source address designating a head location of thedata d6-3 and a data length=16 KB may be set to the DMAC 15. Thetransfer source address designating the head location of the data d6-3can be obtained by adding an offset corresponding to 24 KB to a value ofthe data pointer in the write command corresponding to the data d6.

In addition, the controller 4 transfers the write data (d6-3) of 16Kbytes as data to be written to the page P3 of the write destinationblock BLK #1 to the NAND flash memory 5.

In addition, the controller 4 writes data (P0 to P3) of four pages to aplurality of memory cells connected to the word line WL0 of the writedestination block BLK #1 by the foggy write operation.

The controller 4 changes a next write destination page of the writedestination block BLK #1 to the page P4 and acquires the data d7 havinga size of 16 Kbytes from the write data buffer 51 of the host 2. In thiscase, although not limited thereto, the controller 4 may transfer writedata of 16 Kbytes from the write data buffer 51 of the host 2 to theinternal buffer 31 by one DMA transfer. In the DMA transfer, a transfersource address designating a head location of the data d7 and a datalength=16 KB may be set to the DMAC 15.

The transfer source address designating the head location of the data d7is represented by the data pointer in the write command corresponding tothe data d7.

In addition, the controller 4 transfers the write data (d7) of 16 Kbytesas data to be written to the page P4 of the write destination block BLK#1 to the NAND flash memory 5.

The controller 4 changes a next write destination page of the writedestination block BLK #1 to the page P5 and acquires write data of 16Kbytes obtained by combining the data d8 having a size of 8 Kbytes andthe data d9 having a size of 8 Kbytes from the write data buffer 51 ofthe host 2. In this case, although not limited thereto, the controller 4may transfer write data of 16 Kbytes from the write data buffer 51 ofthe host 2 to the internal buffer 31 by two DMA transfers. In the firstDMA transfer, a transfer source address designating a head location ofthe data d8 and a data length=8 KB may be set to the DMAC 15. Thetransfer source address designating the head location of the data d8 isrepresented by the data pointer in the write command corresponding tothe data d8. In the second DMA transfer, a transfer source addressdesignating a head location of the data d9 and a data length=8 KB may beset to the DMAC 15. The transfer source address designating the headlocation of the data d9 is represented by the data pointer in the writecommand corresponding to the data d9.

In addition, the controller 4 transfers the write data (d8 and d9) of 16Kbytes as data to be written to the page P5 of the write destinationblock BLK #1 to the NAND flash memory 5.

The controller 4 changes a next write destination page of the writedestination block BLK #1 to the page P6 and acquires head data d10-1 of16 Kbytes in the data d10 from the write data buffer 51 of the host 2.In this case, although not limited thereto, the controller 4 maytransfer write data of 16 Kbytes from the write data buffer 51 of thehost 2 to the internal buffer 31 by one DMA transfer. In the DMAtransfer, a transfer source address designating a head location of thedata d10-1 and a data length=16 KB may be set to the DMAC 15. Thetransfer source address designating the head location of the data d10-1is represented by the data pointer in the write command corresponding tothe data d10.

In addition, the controller 4 transfers the write data (d10-1) of 16Kbytes as data to be written to the page P6 of the write destinationblock BLK #1 to the NAND flash memory 5.

The controller 4 changes a next write destination page of the writedestination block BLK #1 to the page P7 and acquires next 16 Kbyte datad10-2 of the data d10 from the write data buffer 51 of the host 2. Inthis case, although not limited thereto, the controller 4 may transferwrite data of 16 Kbytes from the write data buffer 51 of the host 2 tothe internal buffer 31 by one DMA transfer. In the DMA transfer, atransfer source address designating a head location of the data d10-2and a data length=16 KB may be set to the DMAC 15. The transfer sourceaddress designating the head location of the data d10-2 can be obtainedby adding an offset corresponding to 16 KB to a value of the datapointer in the write command corresponding to the data d10.

In addition, the controller 4 transfers the write data (d10-2) of 16Kbytes as data to be written to the page P7 of the write destinationblock BLK #1 to the NAND flash memory 5.

In addition, the controller 4 writes data (P4 to P7) of four pages to aplurality of memory cells connected to the word line WL1 of the writedestination block BLK #1 by the foggy write operation.

As described above, in accordance with the progress of the writeoperation of the write destination block BLK #1, the controller 4acquires data of 16 Kbytes to be transferred to the write destinationpage of the write destination block BLK #1 from the host 2.

In addition, when the foggy write operation for the plurality of memorycells connected to the word line WL3 is finished, the fine writeoperation for the plurality of memory cells connected to the word lineWL0 can be executed. The controller 4 changes a next write destinationpage of the write destination block BLK #1 to the page P0. In the sameprocedure as the above, the controller 4 transfers the write data (P0 toP3) again to the NAND flash memory 5 in a page unit and writes the writedata (P0 to P3) of the four pages to the plurality of memory cellsconnected to the word line WL0 of the write destination block BLK #1 bythe fine write operation.

As a result, for the first six write commands, that is, the writecommand corresponding to the data d1, the write command corresponding tothe data d2, the write command corresponding to the data d3, the writecommand corresponding to the data d4, the write command corresponding tothe data d5, and the write command corresponding to the data d6, all ofthe foggy-fine write operation for the entire write data associated witheach write command is finished and each of the data d1 to d6 becomesreadable from the NAND flash memory 5. Therefore, the controller 4returns six command completion responses corresponding to the first sixwrite commands to the host 2.

In FIG. 9 , the operation for transferring the write data associatedwith each write command designating the write destination block BLK #1from the host 2 to the flash storage device 3 in a unit of 16 Kbytes inaccordance with the progress of the write operation of the writedestination block BLK #1 has been described. However, the same operationas the operation described in FIG. 9 is executed for each of the otherwrite destination blocks BLK #.

A flowchart of FIG. 10 illustrates a procedure of data write processingexecuted by the flash storage device 3.

The controller 4 of the flash storage device 3 receives each writecommand including a data pointer, a length, and a block identifier (forexample, a block address) from the host 2 (step S11).

Next, the controller 4 divides large-sized write data corresponding toone write command designating a specific write destination block intotwo or more data portions or combines two or more write datacorresponding to two or more write commands designating the specificwrite destination block, thereby transferring the data from the host 2to the flash storage device 3 in a unit of the same size as the writeunit (data transfer size) of the NAND flash memory 5 (step S12). In stepS12, as described in FIG. 9 , for example, one data of 16 Kbytesobtained by combining some write data portions having a small size orone of some write data of 16 Kbytes obtained by dividing the write datahaving a large size is transferred from the host 2 to the flash storagedevice 3. In the case where the flash storage device 3 has aconfiguration including the internal buffer 31, each write data of 16bytes transferred from the host 2 to the flash storage device 3 isstored in the internal buffer 31. In addition, in step S12, in order tocombine some write data portions having small sizes, when a size ofwrite data associated with a preceding write command having anidentifier designating a certain write destination block is smaller thanthe write unit (for example, 16 Kbytes), the controller 4 waits forreception of a subsequent write command having the identifierdesignating the write destination block.

The controller 4 transfers the data of 16 Kbytes transferred from thehost 2 to the NAND flash memory 5 and writes the data of 16 Kbytes tothe specific write destination block (step S13).

Then, the controller 4 determines whether all of a write operation (awrite operation involving transferring the same data to the NAND flashmemory 5 once or more) for the entire write data associated with onewrite command designating the certain write destination block has beenfinished and the entire write data has become readable from the NANDflash memory 5 (step S14).

When all of the write operation for the entire write data associatedwith one write command designating the certain write destination blockis finished and the entire write data is readable from the NAND flashmemory 5, the controller 4 returns a response indicating the commandcompletion of the write command to the host 2 (step S15).

In the case of using the write operation involving transferring the samedata to the NAND flash memory 5 multiple times like the foggy-fine writeoperation, when all of the write operation (multi-step write operation)for the entire write data associated with one write command designatingthe certain write destination block is finished, the controller 4 mayreturn a response indicating the command completion of the write commandto the host 2. The reason is that, in the foggy-fine write operation,when the fine write operation of certain data is finished, the data canbe correctly read from the NAND flash memory 5.

Further, the following type of NAND flash memory may be used, in whicheven if the fine write operation of data for a certain page is finished,the data cannot be read and the data can be correctly read after writeof data for one or more subsequent pages is finished. In this case, whenall of a write operation (multi-step write operation) for the entirewrite data associated with one write command designating the certainwrite destination block is finished and the entire write data becomesreadable from the NAND flash memory 5 by writing of data to one or moresubsequent pages, a response indicating the command completion of thewrite command may be returned to the host 2.

As described above, in the present embodiment, when the write dataassociated with the certain write command is transferred from the host 2to the flash storage device 3, a response indicating the commandcompletion of the write command is not returned to the host 2 and whenall of the write operation necessary for writing the entire write dataassociated with the certain write command is finished or all of thewrite operation of the entire write data is finished and the entirewrite data becomes readable from the NAND flash memory 5, a responseindicating the command completion of the write command is returned tothe host 2.

As a result, the host 2 can maintain the write data of each writecommand in the write data buffer 51 until the write data of each writecommand becomes readable from the flash storage device 3, by performingonly simple processing for discarding the write data corresponding tothe write command of which the command completion has been given innotification, from the write data buffer 51.

A flowchart of FIG. 11 illustrates a procedure of write data discardprocessing executed by the host 2.

The host 2 determines whether a response indicating the commandcompletion of the write command has been received from the flash storagedevice 3 (step S21). When the response indicating the command completionof the certain write command has been received from the flash storagedevice 3 (step S22), the host 2 discards the write data associated withthe write command from the write data buffer 51 (step S22).

FIG. 12 illustrates dummy data write processing executed by the flashstorage device 3, when a next write command designating a certain writedestination block is not received for a threshold period from receptionof a latest write command designating the certain write destinationblock.

Data d1, data d2, data d3, and data d4 illustrated in a left portion ofFIG. 12 indicate four write data corresponding to four write commandsdesignating the write destination block BLK #1. In FIG. 12 , the casewhere each of the data d1, the data d2, the data d3, and the data d4 hasa size of 4 Kbytes is assumed.

(1) The controller 4 acquires write data of 16 Kbytes obtained bycombining the data d1, the data d2, the data d3, and the data d4, fromthe write data buffer 51 of the host 2. In addition, the controller 4transfers the write data of 16 Kbytes as data to be written to the pageP0 of the write destination block BLK #1 to the NAND flash memory 5.When a subsequent write command designating the write destination blockBLK #1 is not received for the threshold period from reception of thelatest write command designating the write destination block BLK #1,that is, the write command that has requested writing of the data d4, inorder to enable a response indicating the command completion of thelatest write command to be returned to the host 2 within a predeterminedtime, the controller 4 writes dummy data to one or more pages in thewrite destination block BLK #1 and advances a location of a writedestination page in the write destination block BLK #1 where next writedata is to be written. For example, the controller 4 transfers dummydata of three pages corresponding to the pages P1 to P3 to the NANDflash memory 5 in a page unit and writes data (P0 to P3) of the fourpages to a plurality of memory cells connected to the word line WL0 ofthe write destination block BLK #1 by the foggy write operation.

(2) Next, the controller 4 transfers dummy data of four pagescorresponding to the pages P4 to P7 to the NAND flash memory 5 in a pageunit and writes data (P4 to P7) of the four pages to a plurality ofmemory cells connected to the word line WL1 of the write destinationblock BLK #1 by the foggy write operation.

(3) Next, the controller 4 transfers dummy data of four pagescorresponding to the pages P8 to P11 to the NAND flash memory 5 in apage unit and writes data (P8 to P11) of the four pages to a pluralityof memory cells connected to the word line WL2 of the write destinationblock BLK #1 by the foggy write operation.

(4) Next, the controller 4 transfers dummy data of four pagescorresponding to the pages P12 to P15 to the NAND flash memory 5 in apage unit and writes data (P12 to P15) of the four pages to a pluralityof memory cells connected to the word line WL3 of the write destinationblock BLK #1 by the foggy write operation.

(5) Next, the controller 4 transfers the write data of 16 Kbytesobtained by combining the data d1, the data d2, the data d3, and thedata d4 from the write data buffer 51 or the internal buffer 31 to theNAND flash memory 5 and transfers the same dummy data (P1 to P3) ofthree pages as the dummy data (P1 to P3) of the three pages used in thefoggy write operation of the word line WL0 to the NAND flash memory 5 ina page unit. In addition, the controller 4 writes the data (P0 to P3) ofthe four pages to the plurality of memory cells connected to the wordline WL0 of the write destination block BLK #1 by the fine writeoperation. As a result, all of the multi-step write operation of thedata d1, the data d2, the data d3, and the data d4 is finished and thedata d1, the data d2, the data d3, and the data d4 become readable fromthe NAND flash memory 5. The controller 4 returns a response indicatingthe command completion of the first write command having requestedwriting of the data d1, a response indicating the command completion ofthe second write command having requested writing of the data d2, aresponse indicating the command completion of the third write commandhaving requested writing of the data d3, and a response indicating thecommand completion of the fourth write command having requested writingof the data d4 to the host 2.

In the present embodiment, when the write data is transferred from thehost 2 to the flash storage device 3 in a unit of the same data size asthe data write unit of the NAND flash memory 5. When all of the writeoperation of the entire write data of the certain write command isfinished or when all of the write operation of the entire write data isfinished and the entire write data is readable, a response indicatingthe command completion of the write command is returned to the host 2.For this reason, for example, when a subsequent write commanddesignating the certain write destination block is not issued from thehost 2 for a while after the write command requesting writing of thesmall write data to the certain write destination block is issued fromthe host 2 to the flash storage device 3, a timeout error of the writecommand may occur. In the present embodiment, when a next write commandhaving the certain block identifier is not received for the thresholdperiod after the latest write command having the certain blockidentifier is received from the host 2, the controller 4 writes thedummy data to next one or more unwritten pages in the write destinationblock corresponding to the block identifier. Therefore, the writeoperation of the write destination block can be progressed as necessary,so that it is possible to prevent occurrence of the timeout error of thewrite command.

A flowchart of FIG. 13 illustrates a procedure of dummy data writeprocessing executed by the flash storage device 3. Here, the case wheredata is written to the write destination block by the multi-step writeoperation such as the foggy-fine write operation is assumed.

The controller 4 of the flash storage device 3 writes the write dataassociated with the latest write command designating the certain writedestination block to the write destination block by the first writeoperation step such as the foggy write operation. When the next writecommand designating the write destination block is not received for thethreshold period (Th) from the reception of the latest write command(YES in step S31), the controller 4 writes the dummy data to one or morepages subsequent to the page in the write destination block where thewrite data associated with the latest write command has been written,thereby advancing a location of a write destination page in the writedestination block where next write data is to be written (step S32).When the fine write operation (second write operation step) of the writedata associated with the latest write command can be executed byadvancing the location of the write destination page by writing thedummy data to the write destination block, the controller 4 transfersthe write data associated with the latest write command again from thewrite data buffer 51 or the internal buffer (shared cache) 31 to theNAND flash memory 5 and executes the fine write operation of the writedata (step S33).

When the fine write operation of the write data associated with thelatest write command is finished, that is, all of the multi-step writeoperation of the entire write data is finished, the controller 4 returnsa response indicating the command completion of the latest write commandto the host 2 (step S34).

As described above, in the case of writing the write data to the writedestination block by the multi-step write operation, in order to enablethe second write operation step of the write data associated with thelatest write command to be executed, the controller 4 writes the dummydata to one or more pages in this write destination block and advances alocation of the write destination page in the write destination blockwhere the next write data is to be written.

FIG. 14 illustrates a data transfer operation executed by the controller4 using the internal buffer (shared cache) 31.

The internal buffer (shared cache) 31 is shared by a plurality of writedestination blocks BLK #1, BLK #2, . . . , and BLK #n. The controller 4of the flash storage device 3 executes the following processing for eachof the write destination blocks BLK #1, BLK #2, . . . , and BLK #n.

The write destination block BLK #1 will be described below by way ofexample.

After receiving one or more write commands designating the writedestination block BLK #1, the controller 4 acquires, from the write databuffer 51, write data having the same size as the write unit of the NANDflash memory 5, which is obtained by dividing the write data associatedwith one write command designating the write destination block BLK #1into a plurality of write data or combining the write data associatedwith the two or more write commands designating the write destinationblock BLK #1. In addition, the controller 4 stores a plurality of writedata, each of which is obtained from the write data buffer 51 and hasthe same size as the write unit of the NAND flash memory 5, in theinternal buffer (shared cache) 31.

The write data buffer 51 does not necessarily include one continuousregion on the host memory. As illustrated in FIG. 14 , the write databuffer 51 may be realized by a plurality of write data buffers 51-1,51-2, . . . , and 51-n.

The controller 4 acquires the write data (first write data) to besubsequently written to the write destination block BLK #1 from theinternal buffer (shared cache) 31, transfers the first write data to theNAND flash memory 5, and writes the first write data to the writedestination block BLK #1 by the first write operation step such as thefoggy write operation.

In order to efficiently store the write data from the host 2 in theinternal buffer (shared cache) 31, when there is no free region forstoring write data acquired from the host 2 in the internal buffer(shared cache) 31, the controller 4 discards the write data (write dataof a foggy state) in the internal buffer (shared cache) 31 in which thefirst write operation step such as the foggy write operation is finishedand secures a free region in the internal buffer (shared cache) 31.

For example, when a new write command designating an arbitrary writedestination block is received from the host 2 in a state in which thereis no free region in the internal buffer (shared cache) 31, thecontroller 4 may discard the write data (write data of a foggy state) inthe internal buffer (shared cache) 31 in which the first write operationstep such as the foggy write operation is finished and secure a freeregion capable of storing write data corresponding to the new writecommand in the internal buffer (shared cache) 31.

For example, when a new write command is received from the host 2 in astate in which the entire internal buffer (shared cache) 31 is filledwith a large amount of write data of a foggy state, the controller 4 mayselect specific write data to be discarded from the write data of thefoggy state and discard the selected write data. As a result, it ispossible to efficiently share the internal buffer (shared cache) 31having the limited capacity between a plurality of write destinationblocks.

In the case where the first write data does not exist in the internalbuffer (shared cache) 31 at a point of time when the second writeoperation step such as the fine write operation of the first write datais to be executed, the controller 4 acquires the first write data againfrom the write data buffer 51 of the host 2 by sending a request(transfer request: DMA transfer request) for acquiring the first writedata to the host 2. The acquired first write data may be stored in theinternal buffer (shared cache) 31. In addition, the controller 4transfers the acquired first write data to the NAND flash memory 5 andwrites the first write data to the write destination block BLK #1 by thesecond write operation step such as the fine write operation.

In the case where the first write data exists in the internal buffer(shared cache) 31 at a point of time when the second write operationstep such as the fine write operation of the first write data is to beexecuted, the controller 4 acquires the first write data from theinternal buffer (shared cache) 31, transfers the acquired first writedata to the NAND flash memory 5, and writes the first write data to thewrite destination block BLK #1 by the second write operation step suchas the fine write operation.

After performing the final data transfer (here, data transfer for thefine write operation) of the first write data to the NAND flash memory5, the controller 4 discards the first write data from the internalbuffer (shared cache) 31, thereby securing a free region in the internalbuffer (shared cache) 31. Alternatively, the controller 4 may discardthe first write data from the internal buffer (shared cache) 31 when thefine write operation of the first write data is finished.

When all of the write operation for the entire write data associatedwith a certain write command is finished or when the fine writeoperation of the entire write data is finished and the entire write databecomes readable from the NAND flash memory 5, the controller 4 returnsa response indicating the command completion of the write command to thehost 2.

Although the internal buffer (shared cache) 31 has a limited capacity,if the number of write destination blocks is a certain number or less,the probability (hit rate) that the first write data exists in theinternal buffer (shared cache) 31 at a point of time when the secondwrite operation step for the first write data is to be executed isrelatively high. Therefore, it is possible to execute the multi-stepwrite operation such as the foggy-fine write operation withouttransferring the same write data from the host 2 to the flash storagedevice 3 multiple times. As a result, since data traffic between thehost 2 and the flash storage device 3 can be reduced, I/O performance ofthe flash storage device 3 can be improved as compared with the casewhere the same write data is transferred from the host 2 to the flashstorage device 3 multiple times each time data is written.

The number of write destination blocks may be the same as the number ofclients using the host 2. In this case, data corresponding to a certainclient is written to a write destination block corresponding to theclient and data corresponding to another client is written to anotherwrite destination block. Therefore, when the number of clients using thehost 2 increases, the hit ratio of the internal buffer (shared cache) 31decreases. However, when the first write data does not exist in theinternal buffer (shared cache) 31 (miss), the controller 4 acquires thefirst write data from the host 2. Therefore, even when the number ofclients increases, it is possible to normally execute the multi-stepwrite operation such as the foggy-fine write operation.

Therefore, the flash storage device 3 can flexibly cope with an increasein the number of clients sharing the flash storage device 3 (that is, anincrease in the number of write destination blocks that can besimultaneously used) and the data traffic between the host 2 and theflash storage device 3 can be reduced.

Here, the write processing for writing data to the write destinationblock BLK #1 has been described. However, the same write processing isexecuted for each of the other write destination blocks.

FIG. 15 illustrates the write processing executed by the controller 4using the internal buffer (shared cache) 31 and processing fordiscarding the write data in the internal buffer (shared cache) 31.

In FIG. 15 , for the sake of simplification of illustration, the casewhere the internal buffer (shared cache) 31 includes regions 101 to 109is exemplified. Further, in FIG. 15 , the NAND flash memory 5 isrealized as a QLC-flash and processing for discarding the write data ina unit of a data size of four pages is exemplified. However, the presentembodiment is not limited thereto. For example, processing fortransferring the write data from the write data buffer 51 to theinternal buffer (shared cache) 31 in a unit of a data size of one pagemay be executed and processing for discarding the write data in a unitof a data size of one page may be executed. Further, in FIG. 15 , thecase where the foggy-fine write operation is executed across three wordlines WL is assumed.

Each of write data D1 and D2 respectively stored in the regions 101 and102 of the internal buffer (shared cache) 31 is associated with one ormore write commands designating the write destination block BLK #11.Each of the write data D1 and D2 may have, for example, a size of fourpages. The controller 4 writes the write data D1 of four pages to pagesP0 to P3 (a plurality of memory cells connected to the word line WL0) ofthe write destination block BLK #11 by the foggy write operation (1),and writes the write data D2 of four pages to pages P4 to P7 (aplurality of memory cells connected to the word line WL1) of the writedestination block BLK #11 by the foggy write operation (2).

Each of write data D11, D12, and D13 respectively stored in the regions103, 104, and 105 of the internal buffer (shared cache) 31 is associatedwith one or more write commands designating a write destination blockBLK #101. Each of the write data D11, D12, and D13 may have, forexample, a size of four pages. The controller 4 writes the write dataD11 of four pages to the pages P0 to P3 (a plurality of memory cellsconnected to the word line WL0) of the write destination block BLK #101by the foggy write operation (3), writes the write data D12 of fourpages to the pages P4 to P7 (a plurality of memory cells connected tothe word line WL1) of the write destination block BLK #101 by the foggywrite operation (4), and writes the write data D13 of four pages topages P8 to P11 (a plurality of memory cells connected to the word lineWL2) of the write destination block BLK #101 by the foggy writeoperation (5).

After the foggy write operation of the write data D13 of four pages withrespect to the word line WL2 of the write destination block BLK #101 isfinished, the controller 4 writes the write data D11 of four pages tothe pages P0 to P3 (a plurality of memory cells connected to the wordline WL0) of the write destination block BLK #101 by the fine writeoperation (6). When the fine write operation of the write data D11 isfinished or when the transfer (final transfer) for the fine writeoperation of the write data D11 to the NAND flash memory chip includingthe write destination block BLK #101 is finished, a state of the writedata D11 changes from a foggy state to a fine state. Further, thecontroller 4 discards the write data D11 (write data of the fine state)in which the fine write operation has been finished from the internalbuffer (shared cache) 31 to set the region 103 to a free region (7).

FIG. 16 illustrates processing for discarding the write data in theinternal buffer (shared cache) 31, which is executed by the controller 4when there is no free region in the internal buffer (shared cache) 31.

An upper portion of FIG. 16 illustrates a state in which the entireinternal buffer (shared cache) 31 is filled with write data (D21 to D23,D31 to D33, and D41 to D43) of the foggy state in which the foggy writeoperation (first write operation step) is finished and there is no freeregion in the internal buffer (shared cache) 31.

In this state, when it is necessary to transfer the write data from thewrite data buffer 51 to the internal buffer (shared cache) 31, forexample, when a new write command is received from the host 2, asillustrated in a middle portion of FIG. 16 , the controller 4 selectsthe oldest write data (here, the write data D11) from the write data(write data of the foggy state) in which the foggy write operation(first write operation step) is finished as write data to be discardedand discards the oldest write data (here, the write data D11) from theinternal buffer (shared cache) 31.

In addition, as illustrated in a lower portion of FIG. 16 , thecontroller 4 of the flash storage device 3 stores new write data (here,write data D51) received from the write data buffer 51 in the region 101that has become a free region by discarding the write data D11.

Instead of discarding the oldest write data among the write data (writedata of the foggy state) in which the foggy write operation has beenfinished, the write data having the smallest number of remaining datatransfers to the NAND flash memory 5 may be discarded among the writedata (write data of the foggy state) in which the foggy write operationhas been finished. In this case, for example, in the case where themulti-step write operation involving transferring the same data to theNAND flash memory 5 three times is used, data which has already beentransferred twice to the NAND flash memory 5 is selected as data to bediscarded in preference to data which has been transferred once to theNAND flash memory 5.

A flowchart of FIG. 17 illustrates a procedure of data write processingexecuted by the controller 4 using the internal buffer (shared cache)31.

The controller 4 receives one or more write commands each including adata pointer, a length of write data, and an identifier (for example, ablock address) designating any one of a plurality of write destinationblocks from the host 2 (step S101). After receiving one or more writecommands having identifiers indicating the same write destination block,the controller 4 transfers write data having the same size as the writeunit of the NAND flash memory 5, which is obtained by dividing the writedata associated with one write command in the write commands into aplurality of write data or combining the write data associated with twoor more write commands having the identifiers indicating the same writedestination blocks, from the write data buffer 51 to the internal buffer(shared cache) 31 (step S102).

The controller 4 acquires the write data to be subsequently written tothe write destination block from the internal buffer (shared cache) 31,transfers the write data to the NAND flash memory 5, and writes thewrite data to the write destination block by the foggy write operation(steps S103 and S104). When the NAND flash memory 5 is realized as aQLC-flash, in step S103, the write data of four pages is transferred tothe NAND flash memory 5 in a page unit and in step S104, the write dataof the four pages is written to a plurality of memory cells connected toone word line to be written in the write destination block by the foggywrite operation.

The transfer of the write data from the write data buffer 51 to theinternal buffer (shared cache) 31 is executed in accordance with theprogress of the write operation of each write destination block. Forexample, when an operation of transferring the write data to be writtento a certain page of a certain write destination block to the NAND flashmemory chip is finished, write data to be written to a next page of thewrite destination block may be transferred from the write data buffer 51to the internal buffer (shared cache) 31. Alternatively, when theoperation of transferring the write data to be written to the certainpage of the certain write destination block to the NAND flash memorychip including the write destination block is finished and the operationof writing the write data to the write destination block is finished,the write data to be written to the next page of the write destinationblock may be transferred from the write data buffer 51 to the internalbuffer (shared cache) 31.

At a point of time when the fine write operation of the write data inwhich the foggy write operation has been finished is to be started, thecontroller 4 determines whether the write data exists in the internalbuffer (shared cache) 31.

If the write data exists in the internal buffer (shared cache) 31 (YESin step S106), the controller 4 acquires the write data from theinternal buffer (shared cache) 31, transfers the write data to the NANDflash memory 5, and writes the write data to the write destination blockby the fine write operation (steps S107, S108, and S109). As a result,the write data becomes readable from the NAND flash memory 5.

The controller 4 determines whether the foggy-fine write operation ofthe entire write data has been finished and the entire write data hasbecome readable from the NAND flash memory 5, for each write command.Then, the controller 4 returns, to the host 2, a response indicating thecommand completion of the write command corresponding to the write datain which the foggy-fine write operation has been finished and which hasbecome readable from the NAND flash memory 5 (step S110). If the finewrite operation of the entire write data associated with the certainwrite command has been finished by the processing of step S109, aresponse indicating the command completion of the write command may bereturned to the host 2 in step S110.

If the write data does not exist in the internal buffer (shared cache)31 (NO in step S106), the controller 4 acquires the write data from thewrite data buffer 51 on the host memory.

A flowchart of FIG. 18 illustrates a procedure of data read processingexecuted by the controller 4.

As described above, when the data designated by the read commandreceived from the host 2 is data in which all of the write operation(write operation for transferring the same data to the NAND flash memory5 once or more) has not been finished or data in which all of the writeoperation has been finished, but which has not yet become readable fromthe NAND flash memory 5, the controller 4 determines whether the dataexists in the internal buffer (shared cache) 31. When the data does notexist in the internal buffer (shared cache) 31, the controller 4acquires the data from the write data buffer 51, stores the data in theinternal buffer (shared cache) 31, and returns the data from theinternal buffer (shared cache) 31 to the host 2.

Specifically, the following data read processing is executed.

When the controller 4 receives the read command from the host 2 (YES instep S121), the controller 4 determines whether the data designated bythe read command is data in which all of the write operation is finishedand which is readable from the NAND flash memory 5 (step S122).

When the data designated by the read command is readable from the NANDflash memory 5 (YES in step S122), the controller 4 reads the data fromthe NAND flash memory 5 and returns the read data to the host 2 (stepS126). In step S126, the controller 4 transfers the read data to alocation in the read data buffer 53 designated by the data pointerincluded in the read command.

When the data designated by the read command is not readable from theNAND flash memory 5 (NO in step S122), the controller 4 determineswhether the data exists in the internal buffer (shared cache) 31 (stepS123).

When the data designated by the read command exists in the internalbuffer (shared cache) 31 (YES in step S123), the controller 4 reads thedata from the internal buffer (shared cache) 31 and returns the readdata to the host 2 (step S124).

In step S124, the controller 4 transfers the read data to a location inthe read data buffer 53 designated by the data pointer included in theread command.

When the data does not exist in the internal buffer (shared cache) 31(NO in step S123), the controller 4 acquires the data from the writedata buffer 51 and stores the data in the internal buffer (shared cache)31 (step S125). In step S125, the data is transferred from the writedata buffer 51 to a free region of the internal buffer (shared cache) 31by the DMAC 15. When there is no free region of the internal buffer(shared cache) 31, processing for securing the free region of theinternal buffer (shared cache) 31 is executed. In addition, thecontroller 4 reads the data from the internal buffer (shared cache) 31and returns the read data to the host 2 (step S124). In step S124, thecontroller 4 transfers the read data to a location in the read databuffer 53 designated by the data pointer included in the read command.

FIG. 19 illustrates a data write operation and a data read operation tobe applied to the flash storage device 3 realized as the type #2-storagedevice.

In the data write operation, the host 2 designates a write destinationblock and the flash storage device 3 determines a write destinationpage. In addition, in the data read operation, the host 2 designates ablock address and a page address.

The host 2 includes a storage management unit 404 for managing the flashstorage device 3. The storage management unit 404 sends a blockallocation command and a write command to the flash storage device 3.

The controller 4 of the flash storage device 3 includes a blockallocation unit 701 and a page allocation unit 702. The block allocationunit 701 and the page allocation unit 702 may be included in the writecontrol unit 21 described in FIG. 2 .

The data write operation is executed in the following procedure.

(1) When the storage management unit 404 of the host 2 needs to writedata (write data) to the flash storage device 3, the storage managementunit 404 may request the flash storage device 3 to allocate an availablefree block as a write destination block. When the block allocation unit701 receives the request (block allocation command), the blockallocation unit 701 allocates one free block of a free block group asthe write destination block to the host 2 and notifies the host 2 of ablock address (BLK #) of the allocated write destination block.

(2) The storage management unit 404 of the host 2 sends a write commandincluding the block address designating the allocated write destinationblock, a tag for identifying the write data, a data length of the writedata, and a data pointer to the flash storage device 3. In addition, thestorage management unit 404 stores the write data in the write databuffer 51.

(3) When the page allocation unit 702 receives the write command, thepage allocation unit 702 determines a page address indicating a writedestination page in a block (write destination block) having the blockaddress designated by the write command. The controller 4 transfers thewrite data from the write data buffer 51 to the internal buffer (sharedcache) 31 in a unit of a page size and writes the write data to thedetermined write destination page in the write destination block.

(4) The controller 4 may notify the host 2 of the page addressindicating the write destination page as a response indicating thecommand completion of the write command. Alternatively, the controller 4may notify the host 2 of a set of the tag included in the write command,the block address included in the write command, and the determined pageaddress as the response indicating the command completion of the writecommand. In the host 2, the LUT 404A is updated so that a physicaladdress (the block address and the page address) indicating a physicalstorage location where the write data has been written is mapped to thetag of the write data.

The data read operation is executed in the following procedure.

(1)′ When the host 2 needs to read data from the flash storage device 3,the host 2 refers to the LUT 404A to acquire from the LUT 404A thephysical address (the block address and the page address) correspondingto the tag of the data to be read.

(2)′ The host 2 sends a read command designating the acquired blockaddress and page address to the flash storage device 3. When thecontroller 4 of the flash storage device 3 receives the read commandfrom the host 2, the controller 4 reads the data from the physicalstorage location of the read target in the block to be read, based onthe block address and the page address.

FIG. 20 illustrates a block allocation command applied to the flashstorage device 3 realized as the type #2-storage device.

The block allocation command is a command (block allocation request)that requests the flash storage device 3 to allocate a write destinationblock (free block). The host 2 requests the flash storage device 3 toallocate the write destination block by transmitting the blockallocation command to the flash storage device 3, thereby obtaining theblock address (block address of the allocated write destination block).

FIG. 21 illustrates a response to the block allocation command.

When the block allocation command is received from the host 2, thecontroller 4 of the flash storage device 3 selects the free block to beallocated to the host 2 from a free block list, allocates the selectedfree block as the write destination block, and returns a responseincluding the block address of the write destination block to the host2.

FIG. 22 illustrates a write command applied to the flash storage device3 realized as the type #2-storage device.

The write command is a command for requesting the flash storage device 3to write data. The write command may include a command ID, a blockaddress, a tag, a length, and the like.

The command ID is an ID (command code) indicating that a command is awrite command and the write command includes the command ID for thewrite command.

The block address is a physical address designating a write destinationblock where data is to be written.

The tag is an identifier for identifying write data to be written. Asdescribed above, the tag may be a logical address such as the LBA andmay be a key of a key-value store. When the tag is the logical addresssuch as the LBA, the logical address (start LBA) included in the writecommand indicates a logical location (first logical location) in alogical address space where the write data is to be written.

The length indicates a length of the write data to be written.

The write command further includes a data pointer indicating a locationin the write data buffer 51 in which the write data has been stored.

When the write command is received from the host 2, the controller 4determines a write destination location (write destination page) in thewrite destination block having the block address designated by the writecommand. The write destination page is determined in consideration ofpage write order restrictions, bad pages, and the like. In addition, thecontroller 4 writes the write data associated with the write command tothe write destination location (write destination page) in the writedestination block.

FIG. 23 illustrates a response to the write command of FIG. 22 .

The response includes the page address and the length. The page addressis a physical address indicating the physical storage location in thewrite destination block where the data has been written. The physicaladdress may be represented by an offset in the block (that is, a set ofa page address and an offset in a page). The length indicates a lengthof the written data.

Alternatively, the response may further include a tag and a blockaddress, in addition to the page address (offset in the block) and thelength. The tag is the tag included in the write command of FIG. 22 .The block address is the block address included in the write command ofFIG. 22 .

FIG. 24 illustrates a read command applied to the flash storage device 3realized as the type #2-storage device.

The read command is a command for requesting the flash storage device 3to read data. The read command includes a command ID, a tag, a blockaddress, a page address, and a length.

The command ID is an ID (command code) indicating that a command is aread command and the read command includes the command ID for the readcommand.

The block address designates a block where data to be read is stored.The page address designates a page where the data to be read is stored.The page address may be represented by an offset in the block (that is,a set of a page address and an offset in a page), which indicates aphysical storage location in the block where the data to be read isstored. The length indicates a length of the data to be read.

Further, the read command includes a data pointer indicating a locationin the read data buffer 53 to which the data designated by the readcommand is to be transferred.

As described above, according to the present embodiment, after receivingone or more write commands having the first identifiers indicating thesame write destination block, the controller 4 acquires, from the host2, write data having the same size as the data write unit of the NANDflash memory 5, which is obtained by dividing the write data associatedwith one write command in the received write command into a plurality ofwrite data (a plurality of data portions) or combining the write dataassociated with the two or more write commands in the received writecommand. In addition, the controller 4 writes the acquired write data tothe write destination block designated by the first identifier, by thefirst write operation involving transferring the same data once or more.

Therefore, the write data can be acquired from the host 2 in a unit ofthe same data size as the data write unit of the NAND flash memory 5,regardless of the size of the write data designated by each writecommand, and the write data can be transferred to the NAND flash memory5. Therefore, even if a write command requesting writing of large-sizedwrite data to a certain write destination block is received, it ispossible to prevent stagnation of a data write operation for other writedestination block due to this. Therefore, it is possible to efficientlyprocess each of the plurality of write commands respectively designatingthe plurality of write destination blocks. As a result, even if theinternal buffer 31 with the large capacity is not provided on the deviceside or the buffer-less configuration where the capacity of the internalbuffer 31 is nearly zero is used, the plurality of write destinationblocks can be simultaneously used.

That is, as described above, by diverting the host memory (write databuffer 51) on the device side, it is possible to flexibly cope with anincrease in the number of write destination blocks, that is, an increasein the number of clients sharing the flash storage device 3, withoutproviding the internal buffer 31 with the large capacity on the deviceside, and with the limited resources of the flash storage device 3, itis possible to maximize the upper limit of the number of writedestination blocks that can be simultaneously used.

In addition, when all of the write operation (write operation fortransferring the same data to the NAND flash memory 5 once or more) forthe entire write data associated with one write command designating thecertain write destination block is finished or when all of the writeoperation (write operation involving transferring the same data to theNAND flash memory 5 once or more) for the entire write data associatedwith one write command designating the certain write destination blockis finished and the entire write data becomes readable from the NANDflash memory 5, the controller 4 returns a response indicating thecommand completion of the write command to the host 2.

As a result, the host 2 performs only simple processing for discardingthe write data corresponding to the write command of which the commandcompletion has been given in notification, from the write data buffer51, thereby maintaining the write data in the write data buffer 51 untilthe write data of each write command becomes readable.

Further, at a point of time when the second write operation step such asthe fine write operation is to be executed, only when there is no datato be written in the internal buffer 31, the controller 4 transfers thewrite data again from the write data buffer 51 of the host 2 to theinternal buffer 31. Therefore, it becomes unnecessary to transfer thesame data from the write data buffer 51 to the internal buffer 31multiple times every time the data is written. As described above, bydiverting the write data buffer 51 of the host 2 on the device side, itis possible to flexibly cope with an increase in the number of writedestination blocks, that is, an increase in the number of clientssharing the flash storage device 3, without providing the internalbuffer 31 with the large capacity on the device side for the multi-stepwrite operation, and it is possible to reduce data traffic between thehost 2 and the flash storage device 3.

Further, in the configuration of the present embodiment, instead ofreturning the response of the command completion to the host 2 when thewrite data having the size designated by each write command istransferred from the host 2 to the flash storage device 3 and thetransfer of the write data is finished, the write data is transferredfrom the host 2 to the flash storage device 3 in a unit of the same sizeas the write unit of the flash and the response of the commandcompletion is returned to the host 2 for each write command. Therefore,it is possible to flexibly cope with an increase in the number of writedestination blocks, that is, an increase in the number of clientssharing the flash storage device 3 while using a standard such as NVMe.

The write data buffer 51 can be realized as a region accessible fromeach virtual machine executed on the host 2. In the case where the host2 and the flash storage device 3 are connected via a network such asEthernet, the DMA transfer between the write data buffer 51 and theinternal buffer 31 may be executed by remote DMA transfer.

Further, in the present embodiment, the NAND flash memory is exemplifiedas the nonvolatile memory. However, the functions of the presentembodiment can be applied to a variety of other nonvolatile memoriessuch as a magnetoresistive random access memory (MRAM), a phase changerandom access memory (PRAM), a resistive random access memory (ReRAM),and a ferroelectric random access memory (FeRAM).

While certain embodiments have been described, these embodiments havebeen presented by way of example only, and are not intended to limit thescope of the inventions. Indeed, the novel embodiments described hereinmay be embodied in a variety of other forms; furthermore, variousomissions, substitutions and changes in the form of the embodimentsdescribed herein may be made without departing from the spirit of theinventions. The accompanying claims and their equivalents are intendedto cover such forms or modifications as would fall within the scope andspirit of the inventions.

What is claimed is:
 1. A memory system connectable to a host, the hostincluding a buffer, the memory system comprising: a nonvolatile memoryincluding a plurality of blocks, a first block among the plurality ofblocks including a first word line and a second word line, a data writeoperation to the nonvolatile memory being performed in a unit of a firstsize; and a controller electrically connected to the nonvolatile memoryand configured to: in response to receiving, from the host, a firstwrite command: at a first timing, transfer first write data from thebuffer of the host to the nonvolatile memory, a size of the first writedata being equal to the first size; at a second timing after the firsttiming, instruct the nonvolatile memory to write the first write datainto memory cells connected to the first word line; at a third timingafter the second timing, transfer second write data from the buffer ofthe host to the nonvolatile memory, a size of the second write databeing equal to the first size; at a fourth timing after the thirdtiming, instruct the nonvolatile memory to write the second write datainto memory cells connected to the second word line; and at a fifthtiming after the fourth timing, instruct the nonvolatile memory to writethe first write data into the memory cells connected to the first wordline again.
 2. The memory system according to claim 1, wherein the firstwrite data is not readable from the nonvolatile memory between thesecond timing and the fifth timing, and the first write data is readablefrom the nonvolatile memory after the fifth timing.
 3. The memory systemaccording to claim 1, wherein the nonvolatile memory is configured to:at the second timing, write the first write data into the memory cellsconnected to the first word line by a first programming method; at thefourth timing, write the second write data into the memory cellsconnected to the second word line by the first programming method; andat the fifth timing, write the first write data into the memory cellsconnected to the first word line by a second programming method, thesecond programming method being different from the first programmingmethod.
 4. The memory system according to claim 1, further comprising aninternal buffer, wherein the controller is further configured to:between the first timing and the second timing, store the first writedata into the internal buffer; between the third timing and the fourthtiming, store the second write data into the internal buffer; and at asixth timing between the fourth timing and the fifth timing, in a casethat the first write data is no longer stored in the internal buffer:transfer the first write data from the buffer of the host again, storethe first write data into the internal buffer again, and transfer thefirst write data from the internal buffer to the nonvolatile memoryagain.
 5. The memory system according to claim 1, further comprising aninternal buffer, wherein the controller is further configured to:between the first timing and the second timing, store the first writedata into the internal buffer; between the third timing and the fourthtiming, store the second write data into the internal buffer; and at asixth timing between the fourth timing and the fifth timing, in a casethat the first write data is still stored in the internal buffer,transfer the first write data from the internal buffer to thenonvolatile memory again without transferring the first write data fromthe buffer of the host again.
 6. The memory system according to claim 1,further comprising an internal buffer, wherein the controller is furtherconfigured to: between the first timing and the second timing, store thefirst write data into the internal buffer; between the third timing andthe fourth timing, store the second write data into the internal buffer;and at a sixth timing between the fourth timing and the fifth timing, ina case that the first write data is no longer stored in the internalbuffer and a first read command is received from the host that requeststo read the first write data, transfer the first write data from thebuffer of the host again, store the first write data into the internalbuffer again, and transfer the first write data from the internal bufferto the host.
 7. The memory system according to claim 1, wherein thefirst write data includes a plurality of pieces of write data, theplurality of pieces of write data being respectively associated with aplurality of write commands including the first write command, and asize of each of the plurality of pieces of write data is smaller thanthe first size.
 8. The memory system according to claim 1, furthercomprising an internal buffer, wherein the controller is configured to:transfer each of the first write data and the second write data from thebuffer of the host to the nonvolatile memory via the internal buffer. 9.The memory system according to claim 1, wherein the first write commandincludes an identifier of the first block, and the controller is furtherconfigured to, in response to receiving, from the host, a command thatrequests to allocate an available block for the host, allocate the firstblock from the plurality of blocks for the host and notify the host ofthe identifier of the first block.
 10. The memory system according toclaim 1, wherein the first block further includes a third word line, andthe controller is further configured to: at a sixth timing, receive asecond write command that requests to write third write data, a size ofthe third write data being smaller than the first size; and upondetecting that a threshold time period has elapsed from the sixthtiming, transfer the third write data along with dummy write data to thenonvolatile memory, a size of a total of the third write data and thedummy write data being equal to the first size.
 11. A method ofcontrolling a nonvolatile memory, the nonvolatile memory including aplurality of blocks, a first block among the plurality of blocksincluding a first word line and a second word line, a data writeoperation to the nonvolatile memory being performed in a unit of a firstsize, the method comprising: in response to receiving, from a host, afirst write command: at a first timing, transferring first write datafrom a buffer of the host to the nonvolatile memory, a size of the firstwrite data being equal to the first size; at a second timing after thefirst timing, instructing the nonvolatile memory to write the firstwrite data into memory cells connected to the first word line; at athird timing after the second timing, transferring second write datafrom the buffer of the host to the nonvolatile memory, a size of thesecond write data being equal to the first size; at a fourth timingafter the third timing, instructing the nonvolatile memory to write thesecond write data into memory cells connected to the second word line;and at a fifth timing after the fourth timing, instructing thenonvolatile memory to write the first write data into the memory cellsconnected to the first word line again.
 12. The method according toclaim 11, wherein the first write data is not readable from thenonvolatile memory between the second timing and the fifth timing, andthe first write data is readable from the nonvolatile memory after thefifth timing.
 13. The method according to claim 11, further comprising:at the second timing, instructing the nonvolatile memory to write thefirst write data into the memory cells connected to the first word lineby a first programming method; at the fourth timing, instructing thenonvolatile memory to write the second write data into the memory cellsconnected to the second word line by the first programming method; andat the fifth timing, instructing the nonvolatile memory to write thefirst write data into the memory cells connected to the first word lineby a second programming method, the second programming method beingdifferent from the first programming method.
 14. The method according toclaim 11, further comprising: between the first timing and the secondtiming, storing the first write data into an internal buffer that isoutside of the host; between the third timing and the fourth timing,storing the second write data into the internal buffer; and at a sixthtiming between the fourth timing and the fifth timing, in a case thatthe first write data is no longer stored in the internal buffer:transferring the first write data from the buffer of the host again,storing the first write data into the internal buffer again, andtransferring the first write data from the internal buffer to thenonvolatile memory again.
 15. The method according to claim 11, furthercomprising: between the first timing and the second timing, storing thefirst write data into an internal buffer that is outside of the host;between the third timing and the fourth timing, storing the second writedata into the internal buffer; and at a sixth timing between the fourthtiming and the fifth timing, in a case that the first write data isstill stored in the internal buffer, transferring the first write datafrom the internal buffer to the nonvolatile memory again withouttransferring the first write data from the buffer of the host again. 16.The method according to claim 11, further comprising: between the firsttiming and the second timing, storing the first write data into aninternal buffer that is outside of the host; between the third timingand the fourth timing, storing the second write data into the internalbuffer; and at a sixth timing between the fourth timing and the fifthtiming, in a case that the first write data is no longer stored in theinternal buffer and a first read command is received from the host thatrequests to read the first write data: transferring the first write datafrom the buffer of the host again, storing the first write data into theinternal buffer again, and transferring the first write data from theinternal buffer to the host.
 17. The method according to claim 11,wherein the first write data includes a plurality of pieces of writedata, the plurality of pieces of write data being respectivelyassociated with a plurality of write commands including the first writecommand, and a size of each of the plurality of pieces of write data issmaller than the first size.
 18. The method according to claim 11,further comprising: transferring each of the first write data and thesecond write data from the buffer of the host to the nonvolatile memoryvia an internal buffer that is outside of the host.
 19. The methodaccording to claim 11, wherein the first write command includes anidentifier of the first block, and the method further comprises: inresponse to receiving, from the host, a command that requests toallocate an available block for the host, allocating the first blockfrom the plurality of blocks for the host and notifying the host of theidentifier of the first block.
 20. The method according to claim 11,wherein the first block further includes a third word line, and themethod further comprises: at a sixth timing, receiving a second writecommand that requests to write third write data, a size of the thirdwrite data being smaller than the first size; and upon detecting that athreshold time period has elapsed from the sixth timing, transferringthe third write data along with dummy write data to the nonvolatilememory, a size of a total of the third write data and the dummy writedata being equal to the first size.